<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
    用生产者 - 消费者的思维
    L和R去标记区间内的都能够被消费掉；
    需要一个去记录总的能够被消费的数量是一致的
    */
    var canChange = function (start, target) {
      const len = start.length;
      //与start字符串相比，target的L要足够左，R要足够右
      //遍历过程中，target的L执行加法，start的L执行减法
      //start的R执行加法，target的R执行减法
      //遇到不同的时候L和R都要设置为初始值0，且进行判断另一个字符串中是否为0
      let i = 0, L = 0, R = 0, LCount = 0, RCount = 0;
      while (i < len) {
        if (target[i] == "L") {
          L++;
          LCount++;
        }
        if (start[i] == 'R') {
          R++;
          L = 0;
          RCount++;
        }
        //minus
        if (start[i] == 'L') {
          L--;
          R = 0;
          LCount--;
        }
        if (target[i] == 'R') {
          R--;
          RCount--;
        }
        if (L < 0 || R < 0) {
          return false;
        }
        i++;
      }
      if (LCount != 0 || RCount != 0) {
        return false;
      }
      return true;
    };
    console.log(canChange(start = "_L__R__R_", target = "L______RR"))
  </script>
</body>

</html>